package edu.maping.easy.model;

import java.util.ArrayList;

import processing.core.PApplet;

public class PruebaInsidePolygon extends PApplet {

	ArrayList<Point> poly = new ArrayList<Point>();

	public void setup() {
		size(300, 300);
		beginShape(TRIANGLE_FAN);

		poly.add(new Point(57, 50));
		poly.add(new Point(57, 15));
		poly.add(new Point(92, 50));
		poly.add(new Point(57, 85));
		poly.add(new Point(22, 50));
		poly.add(new Point(57, 15));

		fill(255, 0, 0);

		vertex(57, 50);
		vertex(57, 15);
		vertex(92, 50);
		vertex(57, 85);
		vertex(22, 50);
		vertex(57, 15);
		endShape();
	}

	public void draw() {
		super.draw();
		if(isInside()){
			cursor(CROSS);
		}else{
			cursor(HAND);
		}
	}

	public boolean isInside() {

		int x = mouseX;
		int y = mouseY;
		
		int i, j = poly.size() - 1;
		boolean oddNodes = false;

		for (i = 0; i < poly.size(); i++) {
			if (poly.get(i).y < y && poly.get(j).y >= y || poly.get(j).y < y
					&& poly.get(i).y >= y) {
				if (poly.get(i).x + (y - poly.get(i).y)
						/ (poly.get(j).y - poly.get(i).y)
						* (poly.get(j).x - poly.get(i).x) < x) {
					oddNodes = !oddNodes;
				}
			}
			j = i;
		}

		return oddNodes;
	}

}
